package nsu.edu.zsq.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import nsu.edu.zsq.bean.SchOrg;
import nsu.edu.zsq.bean.SchOrgExample;
import nsu.edu.zsq.param.SchOrgParam;

public interface SchOrgMapper {
    /**
     *
     */
    long countByExample(SchOrgExample example);

    /**
     *
     */
    int deleteByExample(SchOrgExample example);

    /**
     *
     */
    int deleteByPrimaryKey(Integer id);

    /**
     *
     */
    int insert(SchOrg record);

    /**
     *
     */
    int insertSelective(SchOrg record);

    /**
     *
     */
    List<SchOrg> selectByExample(SchOrgExample example);

    /**
     *
     */
    SchOrg selectByPrimaryKey(Integer id);

    /**
     *
     */
    int updateByExampleSelective(@Param("record") SchOrg record, @Param("example") SchOrgExample example);

    /**
     *
     */
    int updateByExample(@Param("record") SchOrg record, @Param("example") SchOrgExample example);

    /**
     *
     */
    int updateByPrimaryKeySelective(SchOrg record);

    /**
     *
     */
    int updateByPrimaryKey(SchOrg record);
    
    /**
     * 通过组织id获取该组织的子组织数量
     * @param orgId 组织id
     * @return int 子组织数量
     */
    int countSchOrgChildrenByPrimaryKey(@Param("orgId") int orgId);
    
    /**
     * 通过组织id获取该组织的子组织列表
     * @param orgId 组织id
     * @return List<SchOrg> 子组织列表
     */
    List<SchOrg> listSchOrgChildrenByPrimaryKey(@Param("orgId") int orgId);
    
    /**
     * 通过组织id列表获取组织列表
     * @param orgIds 组织id列表
     * @return List<SchOrg> 组织列表
     */
    List<SchOrg> listSchOrgByOrgIds(@Param("orgIds") int[] orgIds);
    
    /**
     * 通过组织名称查找数据库中的该组织数量
     * @param orgName 组织名称
     * @return int 组织数量
     */
    int countByOrgName(@Param("orgName") String orgName);
    
    /**
     * 根据sort降序获取SchOrgParam列表<br>
     * 注意：因为layui tree的数据需要，SchOrgParam实体类中的属性和数据库中字段不一致，
     * 所以sql语句写的比较死板，如果实体类增加了属性，则需要更改sql语句
     * @return List<SchOrgParam>
     */
    List<SchOrgParam> listSchOrgParam();

    /**
     * 根据院系id获取该院系下面的专业数量
     * @param orgId 院系id
     * @return int
     */
    int countSchMajorByOrgId(int orgId);
}